﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Follow.Common;
using Follow.Model;
using Follow.DataAccess;
using System.Transactions;

namespace Follow.Business
{
    public class EquipeBO
    {
        public IList<Equipe> findByNome(string nome)
        {
            EquipeDAO dao = new EquipeDAO();
            return dao.findByName(nome);
        }



        public IList<Equipe> save(Equipe equipe, Int32 idlogin)
        {
            EquipeDAO dao = new EquipeDAO();
            IList<Equipe> Equipes = new List<Equipe>();

            //valida os campos obrigatorios
            validate(equipe);

            if (equipe.IDEquipe == Int32.MinValue || equipe.IDEquipe.Equals(0))
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    try
                    {
                        Equipes = dao.insert(equipe, idlogin);

                        scope.Complete();
                    }
                    catch
                    {
                        scope.Dispose();
                        throw;
                    }
                }

            }
            else
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    try
                    {
                        Equipes = dao.update(equipe, idlogin);

                        scope.Complete();
                    }
                    catch
                    {
                        scope.Dispose();
                        throw;
                    }
                }
            }

            return Equipes;
        }

        private void validate(Equipe equipe)
        {
            ValidationExceptions exceptions = new ValidationExceptions();

            if (String.IsNullOrEmpty(equipe.Nome))
            {
                exceptions.AddExceptionItem("O campo nome está incompleto.");
            }

            exceptions.ThrowPendingExceptions();
        }


        public Equipe load(Int32 id)
        {
            EquipeDAO dao = new EquipeDAO();
            return dao.findByID(id);
        }
        public void delete(Int32 id, Int32 idlogin)
        {
            EquipeDAO dao = new EquipeDAO();
            dao.delete(id, idlogin);
        }

    }
}